package com.qf.common.utils;

import com.qf.common.constants.CommonConstants;

/**
 * R   result
 * R类是返回json固定的格式命名为R,是随意的,只不过有几个常见命名
 * R,ResultObject,ReturnObject,Result
 */
// 修改为泛型类
public class R<T> {
    /**
     * code,指状态码,
     * 随意定,200 是正确,400 错误
     * 500请求超时
     * 600有权限
     * msg,指信息描述
     * data,返回的数据
     */
    private int code;
    private String msg;
    private T data;

    public static R ok() {//这个方法仅仅是成功的 不带数据的成功的json数据
        R r = new R();
        r.setCode(CommonConstants.SUCCESS);
        r.setMsg("成功");
        return r;
    }

    public static <T> R ok(T data) {//这个方法是成功的 带数据的成功的json数据
        R r = new R();
        r.setCode(CommonConstants.SUCCESS);
        r.setMsg("成功");
        r.setData(data);
        return r;
    }

    public static R fail() {//这个方法仅仅是成功的 不带数据的成功的json数据
        R r = new R();
        r.setCode(CommonConstants.FAIL);
        r.setMsg("失败");
        return r;
    }

    public static R fail(String msg) {//这个方法仅仅是成功的 不带数据的成功的json数据
        R r = new R();
        r.setCode(CommonConstants.FAIL);
        r.setMsg(msg);
        return r;
    }

    public static R fail(int code, String msg) {//这个方法仅仅是成功的 不带数据的成功的json数据
        R r = new R();
        r.setCode(code);
        r.setMsg(msg);
        return r;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}
